The recent rapid growth of the World Wide Web and international computer networks such as the Internet has created a large demand for the content contained at server machines within the network. This has led to the development of content distribution networks (CDNs). CDNs allow content from the servers to be cached at many machines located at various locations in the internet. There may be many thousands of these content server machines, and they may be widely distributed, e.g., located in all continents.
Storing a server's content at many, geographically-distributed content servers within a CDN can vastly reduce the load at the server machine, since user requests can be handled at the content servers. Additionally, users can receive better service if they can receive desired content from a content server that is “good” for them, where good means nearby, inexpensive to communicate with, on-line, uncongested, etc. However, these benefits are possible only if there is a way of directing client requests to good content servers. Furthermore, replication may be controlled so that content from a particular server is allowed to be cached at only a subset of the content servers. Therefore, the content server selection problem has another dimension: choosing good content servers that can also serve the requested content.